<ResourceDictionary
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:Controls1="clr-namespace:Bing.Controls">

  <SolidColorBrush x:Key="SearchTextBox_Background" Color="White" />
  <SolidColorBrush x:Key="SearchTextBox_Foreground" Color="Black" />
  <LinearGradientBrush x:Key="SearchTextBox_Border" StartPoint="0,0" EndPoint="0,1">
    <GradientStop Color="#FFABADB3" Offset="0.05" />
    <GradientStop Color="#FFE2E3EA" Offset="0.07" />
    <GradientStop Color="#FFE3E9EF" Offset="1" />
  </LinearGradientBrush>
  <LinearGradientBrush x:Key="SearchTextBox_BorderMouseOver" StartPoint="0,0" EndPoint="0,1">
    <GradientStop Color="#FF5C97C1" Offset="0.05" />
    <GradientStop Color="#FFB9D7EB" Offset="0.07" />
    <GradientStop Color="#FFC7E2F1" Offset="1" />
  </LinearGradientBrush>
  <SolidColorBrush x:Key="SearchTextBox_SearchIconBorder" Color="White" />
  <SolidColorBrush x:Key="SearchTextBox_SearchIconBackground" Color="White" />
  <LinearGradientBrush x:Key="SearchTextBox_SearchIconBorder_MouseOver" StartPoint="0,0" EndPoint="0,1" >
    <GradientStop Color="#FFFFFFFF" Offset="0" />
    <GradientStop Color="#FFE5F4FC" Offset="1" />
  </LinearGradientBrush>
  <LinearGradientBrush x:Key="SearchTextBox_SearchIconBackground_MouseOver" StartPoint="0,0" EndPoint="0,1" >
    <GradientStop Color="#FFE7F5FD" Offset="0" />
    <GradientStop Color="#FFD2EDFC" Offset="0.5" />
    <GradientStop Color="#FFB6E3FD" Offset="0.51" />
    <GradientStop Color="#FF9DD5F3" Offset="1" />
  </LinearGradientBrush>
  <LinearGradientBrush x:Key="SearchTextBox_SearchIconBorder_MouseDown" StartPoint="0,0" EndPoint="0,1" >
    <GradientStop Color="#FFFFFFFF" Offset="0" />
    <GradientStop Color="#FFE5F4FC" Offset="1" />
  </LinearGradientBrush>
  <LinearGradientBrush x:Key="SearchTextBox_SearchIconBackground_MouseDown" StartPoint="0,0" EndPoint="0,1" >
    <GradientStop Color="#FFE7F5FD" Offset="0" />
    <GradientStop Color="#FFD2EDFC" Offset="0.5" />
    <GradientStop Color="#FFB6E3FD" Offset="0.51" />
    <GradientStop Color="#FF9DD5F3" Offset="1" />
  </LinearGradientBrush>
  <SolidColorBrush x:Key="SearchTextBox_LabelTextColor" Color="Gray" />

  <Style x:Key="{x:Type Controls1:SearchTextBox}" TargetType="{x:Type Controls1:SearchTextBox}">
    <Setter Property="Background" Value="{StaticResource SearchTextBox_Background}" />
    <Setter Property="BorderBrush" Value="{StaticResource SearchTextBox_Border}" />
    <Setter Property="Foreground" Value="{StaticResource SearchTextBox_Foreground}" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="LabelText" Value="Search" />
    <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
    <Setter Property="LabelTextColor" Value="{StaticResource SearchTextBox_LabelTextColor}" /> 
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type Controls1:SearchTextBox}">
          <Border x:Name="Border"
                  Background="{TemplateBinding Background}"
                  BorderBrush="{TemplateBinding BorderBrush}"
                  BorderThickness="{TemplateBinding BorderThickness}"
                  CornerRadius="5">
            <Grid x:Name="LayoutGrid">
              <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="{Binding RelativeSource={RelativeSource TemplatedParent},
                                                  Path=ActualHeight}" />
              </Grid.ColumnDefinitions>
              <ScrollViewer Margin="2" x:Name="PART_ContentHost" Grid.Column="0" />
              <Label x:Name="LabelText"
                     Margin="2"
                     Grid.Column="0"
                     Foreground="{Binding RelativeSource={RelativeSource TemplatedParent},
                                          Path=LabelTextColor}"
                     Content="{Binding RelativeSource={RelativeSource TemplatedParent},
                                       Path=LabelText}"
                     Padding="2,0,0,0"
                     FontStyle="Italic" />
              <Border x:Name="PART_SearchIconBorder"
                      Grid.Column="1"
                      BorderThickness="1"
                      VerticalAlignment="Stretch"
                      HorizontalAlignment="Stretch"
                      BorderBrush="{StaticResource SearchTextBox_SearchIconBorder}"
                      Background="{StaticResource SearchTextBox_SearchIconBackground}">
                      <Image x:Name="SearchIcon"
                        Width="15" Height="15" 
                        MaxHeight="15" MaxWidth="15"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center"
                        Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SearchImage}" />
               </Border>
            </Grid>
          </Border>
          <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
              <Setter Property="BorderBrush" Value="{StaticResource SearchTextBox_BorderMouseOver}" />
            </Trigger>
            <Trigger Property="IsKeyboardFocusWithin" Value="True">
              <Setter Property="BorderBrush" Value="{StaticResource SearchTextBox_BorderMouseOver}" />
            </Trigger>
            <Trigger Property="HasText" Value="True">
              <Setter Property="Visibility" TargetName="LabelText" Value="Hidden" />
            </Trigger> 
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="HasText" Value="True" />
                <Condition Property="SearchMode" Value="Instant" />
              </MultiTrigger.Conditions>
              <Setter Property="Source"
                      TargetName="SearchIcon"
                      Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=ClearImage}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver"
                           SourceName="PART_SearchIconBorder"
                           Value="True" />
                <Condition Property="HasText" Value="True" />
              </MultiTrigger.Conditions>
              <Setter Property="BorderBrush"
                      TargetName="PART_SearchIconBorder"
                      Value="{StaticResource SearchTextBox_SearchIconBorder_MouseOver}" />
              <Setter Property="Background"
                      TargetName="PART_SearchIconBorder"
                      Value="{StaticResource SearchTextBox_SearchIconBackground_MouseOver}" />
            </MultiTrigger>
            <MultiTrigger>
              <MultiTrigger.Conditions>
                <Condition Property="IsMouseOver" SourceName="PART_SearchIconBorder" Value="True" />
                <Condition Property="IsMouseLeftButtonDown" Value="True" />
                <Condition Property="HasText" Value="True" />
              </MultiTrigger.Conditions>
              <Setter Property="Padding"
                      TargetName="PART_SearchIconBorder"
                      Value="2,0,0,0" />
              <Setter Property="BorderBrush"
                      TargetName="PART_SearchIconBorder"
                      Value="{StaticResource SearchTextBox_SearchIconBorder_MouseOver}" />
              <Setter Property="Background"
                      TargetName="PART_SearchIconBorder"
                      Value="{StaticResource SearchTextBox_SearchIconBackground_MouseOver}" />
            </MultiTrigger>
          </ControlTemplate.Triggers>
        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
</ResourceDictionary>
